package cheme.ProcessModel;

import java.beans.PropertyChangeListener;

import org.eclipse.ui.views.properties.IPropertySource;

public interface IPropertyAware extends IPropertySource, PropertyChangeListener
{
	static final String P_IGNOREABLE = "P_IGNORE";
	
	static final String P_FEEDBACK_STATE = "P_FEEDBACK_STATE";
	
	static final String P_INTERPRETABLE = "P_INTERPRETABLE";
	
	static final String P_INITIAL = "P_INITIAL";
	static final String P_DISPOSE = "P_DISPOSE";
	
	static final String P_ANNOTATION = "P_ANNOTATION";
	static final String P_ANNOTATIONS = "P_ANNOTATIONS";
	
	static final String P_CHILD = "P_CHILD";
	static final String P_CHILDREN = "P_CHILDREN";
	static final String P_REORDER = "P_REORDER";
	static final String P_LAYOUT = "P_LAYOUT";
	
	static final String P_CONSTRAINT = "P_CONSTRAINT";

	static final String P_SIZE = "P_SIZE";
	static final String P_LOCATION = "P_LOCATION";
	
	static final String P_TEXT = "P_TEXT";
	
	
	static final String P_COLOR = "P_COLOR";
	static final String P_SOURCE_STREAM = "P_SOURCE_STREAM";
	static final String P_SINK_STREAM = "P_SINK_STREAM";
	static final String P_COMPONENT_LABEL = "P_COMPONENT_LABEL";
	static final String P_COMPONENT_QUANTITY = "P_COMPONENT_QUANTITY";
	static final String P_COMPONENT_UNITS = "P_COMPONENT_UNITS";
	static final String P_COMPONENT_MATERIAL = "P_COMPONENT_MATERIAL";
	static final String P_BEND_POINT = "P_BEND_POINT";
	
	static final String P_COMPLETENESS = "P_COMPLETENESS";
	
	static final String P_LABEL = "P_LABEL";
	static final String P_QUANTITY = "P_QUANTITY";
	static final String P_UNITS = "P_UNITS";
	static final String P_MATERIAL = "P_MATERIAL";
	
	static final String P_EQUATION_TOKEN = "P_EQUATION_TOKEN";

	static final String P_ELEMENT_ADDED = "P_ELEMENT_ADDED";
	static final String P_ELEMENT_REMOVED = "P_ELEMENT_REMOVED";
	
	static final String P_ELEMENT_NAME_UPDATED = "P_ELEMENT_NAME_UPDATED";
	static final String P_CLEAR = "P_CLEAR";
	static final String P_BACKGROUNDCOLOR = "P_BACKGROUNDCOLOR";

	static final String P_VISIBILITY = "P_VISIBILITY";
	
	void setPropertyValue(Object id, Object value);
	
	void addPropertyChangeListener(PropertyChangeListener listener);
	void removePropertyChangeListener(PropertyChangeListener listener);
	void firePropertyChange(String propName, Object oldValue, Object newValue);
	
	boolean hasListener(PropertyChangeListener listener);
	
	void removeAllPropertyChangeListener();
}
